home *** CD-ROM | disk | FTP | other *** search
/ Champak Vol A-4 / (Vol A-4) Vol. A4.iso / interface / browser.swf / scripts / FScrollBarSymbol.as next >
Text File  |  2008-06-13  |  14KB  |  383 lines

  1. FScrollBarClass = function()
  2. {
  3.    var _loc1_ = this;
  4.    if(_loc1_._height != 4)
  5.    {
  6.       _loc1_.init();
  7.       _loc1_.minPos = _loc1_.maxPos = _loc1_.pageSize = _loc1_.largeScroll = 0;
  8.       _loc1_.smallScroll = 1;
  9.       _loc1_.width = !_loc1_.horizontal ? _loc1_._height : _loc1_._width;
  10.       _loc1_._xscale = _loc1_._yscale = 100;
  11.       _loc1_.setScrollPosition(0);
  12.       _loc1_.tabEnabled = false;
  13.       if(_loc1_._targetInstanceName.length > 0)
  14.       {
  15.          _loc1_.setScrollTarget(_loc1_._parent[_loc1_._targetInstanceName]);
  16.       }
  17.       _loc1_.tabChildren = false;
  18.       _loc1_.setSize(_loc1_.width);
  19.    }
  20. };
  21. FScrollBarClass.prototype = new FUIComponentClass();
  22. FScrollBarClass.prototype.setHorizontal = function(flag)
  23. {
  24.    var _loc1_ = this;
  25.    var _loc2_ = flag;
  26.    if(_loc1_.horizontal && !_loc2_)
  27.    {
  28.       _loc1_._xscale = 100;
  29.       _loc1_._rotation = 0;
  30.    }
  31.    else if(_loc2_ && !_loc1_.horizontal)
  32.    {
  33.       _loc1_._xscale = -100;
  34.       _loc1_._rotation = -90;
  35.    }
  36.    _loc1_.horizontal = _loc2_;
  37. };
  38. FScrollBarClass.prototype.setScrollProperties = function(pSize, mnPos, mxPos)
  39. {
  40.    var _loc1_ = this;
  41.    if(_loc1_.enable)
  42.    {
  43.       _loc1_.pageSize = pSize;
  44.       _loc1_.minPos = Math.max(mnPos,0);
  45.       _loc1_.maxPos = Math.max(mxPos,0);
  46.       _loc1_.scrollPosition = Math.max(_loc1_.minPos,_loc1_.scrollPosition);
  47.       _loc1_.scrollPosition = Math.min(_loc1_.maxPos,_loc1_.scrollPosition);
  48.       if(_loc1_.maxPos - _loc1_.minPos <= 0)
  49.       {
  50.          _loc1_.scrollThumb_mc.removeMovieClip();
  51.          _loc1_.upArrow_mc.gotoAndStop(3);
  52.          _loc1_.downArrow_mc.gotoAndStop(3);
  53.          _loc1_.downArrow_mc.onPress = _loc1_.downArrow_mc.onRelease = _loc1_.downArrow_mc.onDragOut = null;
  54.          _loc1_.upArrow_mc.onPress = _loc1_.upArrow_mc.onRelease = _loc1_.upArrow_mc.onDragOut = null;
  55.          _loc1_.scrollTrack_mc.onPress = _loc1_.scrollTrack_mc.onRelease = null;
  56.          _loc1_.scrollTrack_mc.onDragOut = _loc1_.scrollTrack_mc.onRollOut = null;
  57.          _loc1_.scrollTrack_mc.useHandCursor = false;
  58.       }
  59.       else
  60.       {
  61.          var _loc2_ = _loc1_.getScrollPosition();
  62.          _loc1_.upArrow_mc.gotoAndStop(1);
  63.          _loc1_.downArrow_mc.gotoAndStop(1);
  64.          _loc1_.upArrow_mc.onPress = _loc1_.upArrow_mc.onDragOver = _loc1_.startUpScroller;
  65.          _loc1_.upArrow_mc.onRelease = _loc1_.upArrow_mc.onDragOut = _loc1_.stopScrolling;
  66.          _loc1_.downArrow_mc.onPress = _loc1_.downArrow_mc.onDragOver = _loc1_.startDownScroller;
  67.          _loc1_.downArrow_mc.onRelease = _loc1_.downArrow_mc.onDragOut = _loc1_.stopScrolling;
  68.          _loc1_.scrollTrack_mc.onPress = _loc1_.scrollTrack_mc.onDragOver = _loc1_.startTrackScroller;
  69.          _loc1_.scrollTrack_mc.onRelease = _loc1_.stopScrolling;
  70.          _loc1_.scrollTrack_mc.onDragOut = _loc1_.stopScrolling;
  71.          _loc1_.scrollTrack_mc.onRollOut = _loc1_.stopScrolling;
  72.          _loc1_.scrollTrack_mc.useHandCursor = false;
  73.          _loc1_.attachMovie("ScrollThumb","scrollThumb_mc",3);
  74.          _loc1_.scrollThumb_mc._x = 0;
  75.          _loc1_.scrollThumb_mc._y = _loc1_.upArrow_mc._height;
  76.          _loc1_.scrollThumb_mc.onPress = _loc1_.startDragThumb;
  77.          _loc1_.scrollThumb_mc.controller = _loc1_;
  78.          _loc1_.scrollThumb_mc.onRelease = _loc1_.scrollThumb_mc.onReleaseOutside = _loc1_.stopDragThumb;
  79.          _loc1_.scrollThumb_mc.useHandCursor = false;
  80.          _loc1_.thumbHeight = _loc1_.pageSize / (_loc1_.maxPos - _loc1_.minPos + _loc1_.pageSize) * _loc1_.trackSize;
  81.          _loc1_.thumbMid_mc = _loc1_.scrollThumb_mc.mc_sliderMid;
  82.          _loc1_.thumbTop_mc = _loc1_.scrollThumb_mc.mc_sliderTop;
  83.          _loc1_.thumbBot_mc = _loc1_.scrollThumb_mc.mc_sliderBot;
  84.          _loc1_.thumbHeight = Math.max(_loc1_.thumbHeight,6);
  85.          _loc1_.midHeight = _loc1_.thumbHeight - _loc1_.thumbTop_mc._height - _loc1_.thumbBot_mc._height;
  86.          _loc1_.thumbMid_mc._yScale = _loc1_.midHeight * 100 / _loc1_.thumbMid_mc._height;
  87.          _loc1_.thumbMid_mc._y = _loc1_.thumbTop_mc._height;
  88.          _loc1_.thumbBot_mc._y = _loc1_.thumbTop_mc._height + _loc1_.midHeight;
  89.          _loc1_.scrollTop = _loc1_.scrollThumb_mc._y;
  90.          _loc1_.trackHeight = _loc1_.trackSize - _loc1_.thumbHeight;
  91.          _loc1_.scrollBot = _loc1_.trackHeight + _loc1_.scrollTop;
  92.          _loc2_ = Math.min(_loc2_,_loc1_.maxPos);
  93.          _loc1_.setScrollPosition(Math.max(_loc2_,_loc1_.minPos));
  94.       }
  95.    }
  96. };
  97. FScrollBarClass.prototype.getScrollPosition = function()
  98. {
  99.    return this.scrollPosition;
  100. };
  101. FScrollBarClass.prototype.setScrollPosition = function(pos)
  102. {
  103.    var _loc1_ = this;
  104.    var _loc2_ = pos;
  105.    _loc1_.scrollPosition = _loc2_;
  106.    if(_loc1_.scrollThumb_mc != undefined)
  107.    {
  108.       _loc2_ = Math.min(_loc2_,_loc1_.maxPos);
  109.       _loc2_ = Math.max(_loc2_,_loc1_.minPos);
  110.    }
  111.    _loc1_.scrollThumb_mc._y = (_loc2_ - _loc1_.minPos) * _loc1_.trackHeight / (_loc1_.maxPos - _loc1_.minPos) + _loc1_.scrollTop;
  112.    _loc1_.executeCallBack();
  113. };
  114. FScrollBarClass.prototype.setLargeScroll = function(lScroll)
  115. {
  116.    this.largeScroll = lScroll;
  117. };
  118. FScrollBarClass.prototype.setSmallScroll = function(sScroll)
  119. {
  120.    this.smallScroll = sScroll;
  121. };
  122. FScrollBarClass.prototype.setEnabled = function(enabledFlag)
  123. {
  124.    var _loc1_ = this;
  125.    var _loc2_ = enabledFlag;
  126.    var _loc3_ = _loc1_.enable;
  127.    if(_loc2_ && !_loc3_)
  128.    {
  129.       _loc1_.enable = _loc2_;
  130.       if(_loc1_.textField != undefined)
  131.       {
  132.          _loc1_.setScrollTarget(_loc1_.textField);
  133.       }
  134.       else
  135.       {
  136.          _loc1_.setScrollProperties(_loc1_.pageSize,_loc1_.cachedMinPos,_loc1_.cachedMaxPos);
  137.          _loc1_.setScrollPosition(_loc1_.cachedPos);
  138.       }
  139.       _loc1_.clickFilter = undefined;
  140.    }
  141.    else if(!_loc2_ && _loc3_)
  142.    {
  143.       _loc1_.textField.removeListener(_loc1_);
  144.       _loc1_.cachedPos = _loc1_.getScrollPosition();
  145.       _loc1_.cachedMinPos = _loc1_.minPos;
  146.       _loc1_.cachedMaxPos = _loc1_.maxPos;
  147.       if(_loc1_.clickFilter == undefined)
  148.       {
  149.          _loc1_.setScrollProperties(_loc1_.pageSize,0,0);
  150.       }
  151.       else
  152.       {
  153.          _loc1_.clickFilter = true;
  154.       }
  155.       _loc1_.enable = _loc2_;
  156.    }
  157. };
  158. FScrollBarClass.prototype.setSize = function(hgt)
  159. {
  160.    var _loc1_ = this;
  161.    if(_loc1_._height != 1)
  162.    {
  163.       _loc1_.width = hgt;
  164.       _loc1_.scrollTrack_mc._yscale = 100;
  165.       _loc1_.scrollTrack_mc._yscale = 100 * _loc1_.width / _loc1_.scrollTrack_mc._height;
  166.       if(_loc1_.upArrow_mc == undefined)
  167.       {
  168.          _loc1_.attachMovie("UpArrow","upArrow_mc",1);
  169.          _loc1_.attachMovie("DownArrow","downArrow_mc",2);
  170.          _loc1_.downArrow_mc.controller = _loc1_.upArrow_mc.controller = _loc1_;
  171.          _loc1_.upArrow_mc.useHandCursor = _loc1_.downArrow_mc.useHandCursor = false;
  172.          _loc1_.upArrow_mc._x = _loc1_.upArrow_mc._y = 0;
  173.          _loc1_.downArrow_mc._x = 0;
  174.       }
  175.       _loc1_.scrollTrack_mc.controller = _loc1_;
  176.       _loc1_.downArrow_mc._y = _loc1_.width - _loc1_.downArrow_mc._height;
  177.       _loc1_.trackSize = _loc1_.width - 2 * _loc1_.downArrow_mc._height;
  178.       if(_loc1_.textField != undefined)
  179.       {
  180.          _loc1_.onTextChanged();
  181.       }
  182.       else
  183.       {
  184.          _loc1_.setScrollProperties(_loc1_.pageSize,_loc1_.minPos,_loc1_.maxPos);
  185.       }
  186.    }
  187. };
  188. FScrollBarClass.prototype.scrollIt = function(inc, mode)
  189. {
  190.    var _loc1_ = this;
  191.    var _loc3_ = _loc1_.smallScroll;
  192.    if(inc != "one")
  193.    {
  194.       _loc3_ = _loc1_.largeScroll != 0 ? _loc1_.largeScroll : _loc1_.pageSize;
  195.    }
  196.    var _loc2_ = _loc1_.getScrollPosition() + mode * _loc3_;
  197.    if(_loc2_ > _loc1_.maxPos)
  198.    {
  199.       _loc2_ = _loc1_.maxPos;
  200.    }
  201.    else if(_loc2_ < _loc1_.minPos)
  202.    {
  203.       _loc2_ = _loc1_.minPos;
  204.    }
  205.    _loc1_.setScrollPosition(_loc2_);
  206. };
  207. FScrollBarClass.prototype.startDragThumb = function()
  208. {
  209.    var _loc1_ = this;
  210.    _loc1_.lastY = _loc1_._ymouse;
  211.    _loc1_.onMouseMove = _loc1_.controller.dragThumb;
  212. };
  213. FScrollBarClass.prototype.dragThumb = function()
  214. {
  215.    var _loc1_ = this;
  216.    _loc1_.scrollMove = _loc1_._ymouse - _loc1_.lastY;
  217.    _loc1_.scrollMove += _loc1_._y;
  218.    if(_loc1_.scrollMove < _loc1_.controller.scrollTop)
  219.    {
  220.       _loc1_.scrollMove = _loc1_.controller.scrollTop;
  221.    }
  222.    else if(_loc1_.scrollMove > _loc1_.controller.scrollBot)
  223.    {
  224.       _loc1_.scrollMove = _loc1_.controller.scrollBot;
  225.    }
  226.    _loc1_._y = _loc1_.scrollMove;
  227.    var _loc2_ = _loc1_.controller;
  228.    _loc2_.scrollPosition = Math.round((_loc2_.maxPos - _loc2_.minPos) * (_loc1_._y - _loc2_.scrollTop) / _loc2_.trackHeight) + _loc2_.minPos;
  229.    _loc1_.controller.isScrolling = true;
  230.    updateAfterEvent();
  231.    _loc1_.controller.executeCallBack();
  232. };
  233. FScrollBarClass.prototype.stopDragThumb = function()
  234. {
  235.    this.controller.isScrolling = false;
  236.    this.onMouseMove = null;
  237. };
  238. FScrollBarClass.prototype.startTrackScroller = function()
  239. {
  240.    var _loc1_ = this;
  241.    _loc1_.controller.trackScroller();
  242.    _loc1_.controller.scrolling = setInterval(_loc1_.controller,"scrollInterval",500,"page",-1);
  243. };
  244. FScrollBarClass.prototype.scrollInterval = function(inc, mode)
  245. {
  246.    var _loc1_ = this;
  247.    var _loc2_ = inc;
  248.    clearInterval(_loc1_.scrolling);
  249.    if(_loc2_ == "page")
  250.    {
  251.       _loc1_.trackScroller();
  252.    }
  253.    else
  254.    {
  255.       _loc1_.scrollIt(_loc2_,mode);
  256.    }
  257.    _loc1_.scrolling = setInterval(_loc1_,"scrollInterval",35,_loc2_,mode);
  258. };
  259. FScrollBarClass.prototype.trackScroller = function()
  260. {
  261.    var _loc1_ = this;
  262.    if(_loc1_.scrollThumb_mc._y + _loc1_.thumbHeight < _loc1_._ymouse)
  263.    {
  264.       _loc1_.scrollIt("page",1);
  265.    }
  266.    else if(_loc1_.scrollThumb_mc._y > _loc1_._ymouse)
  267.    {
  268.       _loc1_.scrollIt("page",-1);
  269.    }
  270. };
  271. FScrollBarClass.prototype.stopScrolling = function()
  272. {
  273.    var _loc1_ = this;
  274.    _loc1_.controller.downArrow_mc.gotoAndStop(1);
  275.    _loc1_.controller.upArrow_mc.gotoAndStop(1);
  276.    clearInterval(_loc1_.controller.scrolling);
  277. };
  278. FScrollBarClass.prototype.startUpScroller = function()
  279. {
  280.    var _loc1_ = this;
  281.    _loc1_.controller.upArrow_mc.gotoAndStop(2);
  282.    _loc1_.controller.scrollIt("one",-1);
  283.    _loc1_.controller.scrolling = setInterval(_loc1_.controller,"scrollInterval",500,"one",-1);
  284. };
  285. FScrollBarClass.prototype.startDownScroller = function()
  286. {
  287.    var _loc1_ = this;
  288.    _loc1_.controller.downArrow_mc.gotoAndStop(2);
  289.    _loc1_.controller.scrollIt("one",1);
  290.    _loc1_.controller.scrolling = setInterval(_loc1_.controller,"scrollInterval",500,"one",1);
  291. };
  292. FScrollBarClass.prototype.setScrollTarget = function(tF)
  293. {
  294.    var _loc1_ = this;
  295.    var _loc2_ = tF;
  296.    if(_loc2_ == undefined)
  297.    {
  298.       _loc1_.textField.removeListener(_loc1_);
  299.       delete _loc1_.textField[!_loc1_.horizontal ? "vScroller" : "hScroller"];
  300.       if(_loc1_.textField.hScroller != undefined && _loc1_.textField.vScroller != undefined)
  301.       {
  302.          _loc1_.textField.unwatch("text");
  303.          _loc1_.textField.unwatch("htmltext");
  304.       }
  305.    }
  306.    _loc1_.textField = undefined;
  307.    if(_loc2_ instanceof TextField)
  308.    {
  309.       _loc1_.textField = _loc2_;
  310.       _loc1_.textField[!_loc1_.horizontal ? "vScroller" : "hScroller"] = _loc1_;
  311.       _loc1_.onTextChanged();
  312.       _loc1_.onChanged = function()
  313.       {
  314.          this.onTextChanged();
  315.       };
  316.       _loc1_.onScroller = function()
  317.       {
  318.          var _loc1_ = this;
  319.          if(!_loc1_.isScrolling)
  320.          {
  321.             if(!_loc1_.horizontal)
  322.             {
  323.                _loc1_.setScrollPosition(_loc1_.textField.scroll);
  324.             }
  325.             else
  326.             {
  327.                _loc1_.setScrollPosition(_loc1_.textField.hscroll);
  328.             }
  329.          }
  330.       };
  331.       _loc1_.textField.addListener(_loc1_);
  332.       _loc1_.textField.watch("text",_loc1_.callback);
  333.       _loc1_.textField.watch("htmlText",_loc1_.callback);
  334.    }
  335. };
  336. FScrollBarClass.prototype.callback = function(prop, oldVal, newVal)
  337. {
  338.    var _loc1_ = this;
  339.    clearInterval(_loc1_.hScroller.synchScroll);
  340.    clearInterval(_loc1_.vScroller.synchScroll);
  341.    _loc1_.hScroller.synchScroll = setInterval(_loc1_.hScroller,"onTextChanged",50);
  342.    _loc1_.vScroller.synchScroll = setInterval(_loc1_.vScroller,"onTextChanged",50);
  343.    return newVal;
  344. };
  345. FScrollBarClass.prototype.onTextChanged = function()
  346. {
  347.    var _loc1_ = this;
  348.    if(!(!_loc1_.enable || _loc1_.textField == undefined))
  349.    {
  350.       clearInterval(_loc1_.synchScroll);
  351.       if(_loc1_.horizontal)
  352.       {
  353.          var _loc2_ = _loc1_.textField.hscroll;
  354.          _loc1_.setScrollProperties(_loc1_.textField._width,0,_loc1_.textField.maxhscroll);
  355.          _loc1_.setScrollPosition(Math.min(_loc2_,_loc1_.textField.maxhscroll));
  356.       }
  357.       else
  358.       {
  359.          _loc2_ = _loc1_.textField.scroll;
  360.          var _loc3_ = _loc1_.textField.bottomScroll - _loc1_.textField.scroll;
  361.          _loc1_.setScrollProperties(_loc3_,1,_loc1_.textField.maxscroll);
  362.          _loc1_.setScrollPosition(Math.min(_loc2_,_loc1_.textField.maxscroll));
  363.       }
  364.    }
  365. };
  366. FScrollBarClass.prototype.executeCallBack = function()
  367. {
  368.    var _loc1_ = this;
  369.    if(_loc1_.textField == undefined)
  370.    {
  371.       super.executeCallBack();
  372.    }
  373.    else if(_loc1_.horizontal)
  374.    {
  375.       _loc1_.textField.hscroll = _loc1_.getScrollPosition();
  376.    }
  377.    else
  378.    {
  379.       _loc1_.textField.scroll = _loc1_.getScrollPosition();
  380.    }
  381. };
  382. Object.registerClass("FScrollBarSymbol",FScrollBarClass);
  383.